10. Gap优化器实现
工程铁律: 任何性能优化不得以牺牲稳定性为代价;任何架构优化不得增加系统恢复复杂度。
开发优先级与验收标准见 开发原则与验收标准。
// Gap优化器
type GapOptimizer struct {
gapData map[string]int
mu sync.RWMutex
}
func NewGapOptimizer() *GapOptimizer {
return &GapOptimizer{
gapData: make(map[string]int),
}
}
func (g *GapOptimizer) OptimizeGap(deviceID string, mtu int, rtt int64) int {
g.mu.Lock()
defer g.mu.Unlock()
// 根据MTU和RTT计算最优Gap值
// MTU越大,允许的Gap越大
// RTT越小,允许的Gap越大
baseGap := mtu / 100
if baseGap < 0 {
baseGap = 0
}
if baseGap > 20 {
baseGap = 20
}
// 根据RTT调整
rttFactor := 1.0
if rtt > 20000 {
rttFactor = 0.5
} else if rtt > 10000 {
rttFactor = 0.8
}
optimalGap := int(float64(baseGap) * rttFactor)
if optimalGap < 0 {
optimalGap = 0
}
g.gapData[deviceID] = optimalGap
return optimalGap
}